package com.ys.homework;

import java.util.Arrays;

/**
 * @author CodeYang
 * @Description 2获取数组最大值和最小值操作：
 * 利用Java的Math类的random()方法，
 * 1编写函数得到0到n之间的随机数，n是参数。
 * 2并找出产生50个这样的随机数中最大的、最小的数，
 * 3并统计其中>=60的有多少个。
 * @Date 2020/12/11 20:01
 */
public class 获取数组的最大值与最小值 {
    public static void main(String[] args) {
        // 1 生成50个(指定范围的随机数)随机数
        int[] arr = creteArr(50, 0, 100);
        // 2:打印输出数组
        System.out.println(Arrays.toString(arr));
        System.out.println("数组中大于60元素个数为:"+countLargerTargetForArr(arr,60));
        System.out.println("数组最大值为:"+getArrMax(arr));
        System.out.println("数组最小值为:"+getArrMin(arr));


    }

    /**
     * 统计数组元素中大于目标值的个数
     * @param arr 目标数组
     * @param target 目标值
     * @return 返回大于目标值的个数,如果没有一个元素大于目标值返回0
     */
    static int countLargerTargetForArr(int[] arr,int target){
        int count =0;
        for (int i : arr) {
            if (i>target){
                count++;
                continue;
            }
        }
        return count;
    }

    /**
     * 获取数组最大值
     * @param arr 数组
     * @return 最大值
     */
    static int getArrMax(int[] arr) {
        int max = arr[0];
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] > max) {
                max = arr[i];
            }
        }
        return max;
    }

    /**
     * 获取数组最小值
     * @param arr 数组
     * @return 最小值
     */
    static int getArrMin(int[] arr) {
        int min = arr[0];
        for (int i = 0; i < arr.length - 1; i++) {
            if (arr[i] < min) {
                min = arr[i];
            }
        }
        return min;
    }

    /**
     * 生成指定范围的随机数整数[form,to)
     *
     * @param count int 生成多少个
     * @param min   int 最小值
     * @param max   int 最大值,不包括to
     * @return 返回一个 指定范围的随机数的数组 如果count 为0 返回null
     */
    private static int[] creteArr(int count, int min, int max) {
        if (count == 0) {
            return null;
        }
        int[] newArr = new int[count];
        for (int i = 0; i < count; i++) {
            newArr[i] =  min+(int) (Math.random() * max) ;
        }
        return newArr;
    }


}
